package com.ys.gulimall.product.app;

import com.ys.common.utils.PageUtils;
import com.ys.common.utils.R;
import com.ys.common.valid.AddGroup;
import com.ys.common.valid.UpdateGroup;
import com.ys.common.valid.UpdateStatusGroup;
import com.ys.gulimall.product.entity.BrandEntity;
import com.ys.gulimall.product.service.BrandService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.Arrays;
import java.util.List;
import java.util.Map;


/**
 * 品牌
 *
 * @author yeswater
 * @email ruobairuo@gmail.com
 * @date 2021-07-16 17:43:10
 */
@RestController
@RequestMapping("product/brand")
public class BrandController {
    @Resource
    private BrandService brandService;
	
	/**
	 * 列表
	 */
	@RequestMapping("/list")
	//@RequiresPermissions("product:brand:list")
	public R list(@RequestParam Map<String, Object> params){
		PageUtils page = brandService.queryPage(params);
		
		return R.ok().put("page", page);
	}
	
	
	/**
	 * 信息
	 */
	@RequestMapping("/info/{brandId}")
	//@RequiresPermissions("product:brand:info")
	public R info(@PathVariable("brandId") Long brandId){
		BrandEntity brand = brandService.getById(brandId);
		
		return R.ok().put("brand", brand);
	}
	
	/**
	 * 根据品牌id查询品牌信息
	 */
	@RequestMapping("/infos")
	public R info(@RequestParam("brandIds") List<Long> brandIds){
		List<BrandEntity> brands = brandService.getBrandsById(brandIds);
		
		return R.ok().put("brands", brands);
	}
	
	/**
	 * 保存
	 */
	@RequestMapping("/save")
	//@RequiresPermissions("product:brand:save")
	public R save(@Validated({AddGroup.class}) @RequestBody BrandEntity brand
	              //, BindingResult result
	){
		
		// Map<String,String> map = new HashMap<>();
		//
		// if (result.hasErrors()) {
		//     //获取效验错误结果
		//     result.getFieldErrors().forEach((item)-> {
		//         //获取到错误提示
		//         String message = item.getDefaultMessage();
		//         //获取错误的属性的名字
		//         String field = item.getField();
		//         map.put(field,message);
		//     });
		//     return R.error(400,"提交的数据不合法").put("data",map);
		// } else {
		//
		// }
		brandService.save(brand);
		
		
		return R.ok();
	}
	
	/**
	 * 修改
	 */
	@RequestMapping("/update")
	//@RequiresPermissions("product:brand:update")
	public R update(@Validated({UpdateGroup.class}) @RequestBody BrandEntity brand){
		brandService.updateDetail(brand);
		//brandService.updateById(brand);
		
		return R.ok();
	}
	
	/**
	 * 修改状态
	 */
	@RequestMapping("/update/status")
	//@RequiresPermissions("product:brand:update")
	public R updateStatus(@Validated(UpdateStatusGroup.class) @RequestBody BrandEntity brand){
		brandService.updateById(brand);
		
		return R.ok();
	}
	
	/**
	 * 删除
	 */
	@RequestMapping("/delete")
	//@RequiresPermissions("product:brand:delete")
	public R delete(@RequestBody Long[] brandIds){
		brandService.removeByIds(Arrays.asList(brandIds));
		
		return R.ok();
	}

}
